package _go

/*
面试题 01.08. 零矩阵
难度
中等

29

收藏

分享
切换为英文
接收动态
反馈
编写一种算法，若M × N矩阵中某个元素为0，则将其所在的行与列清零。



示例 1：

输入：
[
  [1,1,1],
  [1,0,1],
  [1,1,1]
]
输出：
[
  [1,0,1],
  [0,0,0],
  [1,0,1]
]
示例 2：

输入：
[
  [0,1,2,0],
  [3,4,5,2],
  [1,3,1,5]
]
输出：
[
  [0,0,0,0],
  [0,4,5,0],
  [0,3,1,0]
]*/

//暴力破解
func setZeroes(matrix [][]int) {
	//记录行和列的信息
	hang := map[int]int{}
	jie := map[int]int{}
	for k1, v1 := range matrix {
		for k2, v2 := range v1 {
			if v2 == 0 {
				hang[k1] = 1
				jie[k2] = 1
			}
		}
	}
	for k1, v1 := range matrix {
		for k2, v2 := range v1 {
			if hang[k1] == 1 || jie[k2] == 1 {
				matrix[k1][k2] = 0
				continue
			}
			if v2 == 0 {
				hang[k1] = 1
				jie[k2] = 1
			}
		}
	}
}
